﻿using System;
using System.Collections.Generic;
using System.Web.UI;
using Sebra.Academico.InfraEstrutura.Core.Helper;
using Sebra.Academico.Trilhas.BP;
using Sebrae.Academico.Trilhas.BP;
using Sebrae.Academico.Trilhas.Dominio.Classes;

namespace Sebrae.Academico.Trilhas.WebForms.UserControls
{
    public partial class ucItemTrilha : System.Web.UI.UserControl
    {
        private ItemTrilha itemtrilhaEdicao = null;
        private ManterItemTrilha manterItemTrilha = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.PreencherCombos();

                if (Session["ItemTrilhaEdit"] != null)
                {
                    int idItemTrilha = int.Parse(Session["ItemTrilhaEdit"].ToString());
                    itemtrilhaEdicao = manterItemTrilha.ObterPorID(idItemTrilha);
                    PreencherCampos(itemtrilhaEdicao);
                }
            }
        }

        #region "Métodos Privados"

        protected void ddlTrilhaFormaAprendizagem_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(ddlTrilhaFormaAprendizagem.SelectedItem.Value))
            {
                int idFormaAprendizagem = int.Parse(ddlTrilhaFormaAprendizagem.SelectedItem.Value);
                CarregarComboSolucaoEducacional(idFormaAprendizagem);
            }
        }

        

        public ItemTrilha ObterObjetoItemTrilha()
        {
            itemtrilhaEdicao = new ItemTrilha();

            //Trilha
            if (!string.IsNullOrWhiteSpace(this.ddlTrilha.SelectedItem.Value))
                itemtrilhaEdicao.Trilha = new Trilha() { ID = int.Parse(this.ddlTrilha.SelectedItem.Value) };

            //Trilha Nivel
            if (!string.IsNullOrWhiteSpace(this.ddlTrilhaNivel.SelectedItem.Value))
                itemtrilhaEdicao.TrilhaNivel = new TrilhaNivel() { ID = int.Parse(this.ddlTrilhaNivel.SelectedItem.Value) };

            //Trilha Tópico Temático
            if (!string.IsNullOrWhiteSpace(this.ddlTrilhaTopicoTematico.SelectedItem.Value))
                itemtrilhaEdicao.TrilhaTopicoTematico = new TrilhaTopicoTematico() { ID = int.Parse(this.ddlTrilhaTopicoTematico.SelectedItem.Value) };

            //Trilha Forma Aprendizagem
            if (!string.IsNullOrWhiteSpace(this.ddlTrilhaFormaAprendizagem.SelectedItem.Value))
                itemtrilhaEdicao.TrilhaFormaAprendizagem = new TrilhaFormaAprendizagem() { ID = int.Parse(this.ddlTrilhaFormaAprendizagem.SelectedItem.Value) };

            //Solução Educacional
            if ((this.ddlSolucaoEducacional.SelectedItem != null) &&
                !string.IsNullOrWhiteSpace(this.ddlSolucaoEducacional.SelectedItem.Value))
                itemtrilhaEdicao.SolucaoEducacional = new SolucaoEducacional() { ID = int.Parse(this.ddlSolucaoEducacional.SelectedItem.Value) };

            //Pontos
            if (!string.IsNullOrWhiteSpace(this.txtPontos.Text))
            {
                int qtdPontos = 0;
                if (!int.TryParse(this.txtPontos.Text.Trim(), out qtdPontos))
                    throw new Exception("Valor Inválido para o Campo Pontos. Informe um Valor entre 1 e 9");
                else
                    itemtrilhaEdicao.QuantidadePontosParticipacao = qtdPontos;
            }


            return itemtrilhaEdicao;

        }

        public void LimparCampos()
        {
            ddlTrilha.ClearSelection();
            ddlSolucaoEducacional.ClearSelection();
            ddlTrilhaFormaAprendizagem.ClearSelection();
            ddlTrilhaNivel.ClearSelection();
            ddlTrilhaTopicoTematico.ClearSelection();
            txtPontos.Text = "";
        }

        private void PreencherCombos()
        {
            try
            {
                PreencherComboTrilhas();
                PreencherComboTrilhaNivel();
                PreencherComboTrilhaTopicoTematico();
                PreencherComboTrilhaFormaAprendizagem();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void PreencherComboTrilhaTopicoTematico()
        {
            ManterTrilhaTopicoTematico manterTrilhaTopicoTematico = new ManterTrilhaTopicoTematico();
            IList<TrilhaTopicoTematico> ListaTrilhaTopicoTematico = manterTrilhaTopicoTematico.ObterTodosTrilhaTopicoTematico();
            WebFormHelper.PreencherLista(ListaTrilhaTopicoTematico, this.ddlTrilhaTopicoTematico);
        }


        private void PreencherComboTrilhas()
        {
            ManterTrilha manterTrilha = new ManterTrilha();
            IList<Trilha> ListaTrilhas = manterTrilha.ObterTrilhas();
            WebFormHelper.PreencherLista(ListaTrilhas, this.ddlTrilha);
        }

        private void PreencherComboTrilhaFormaAprendizagem()
        {
            ManterTrilhaFormaAprendizagem manterTrilhaFormaAprendizagem = new ManterTrilhaFormaAprendizagem();
            IList<TrilhaFormaAprendizagem> ListaTrilhaFormaAprendizagem = manterTrilhaFormaAprendizagem.ObterTodosTrilhaFormaAprendizagem();
            WebFormHelper.PreencherLista(ListaTrilhaFormaAprendizagem, this.ddlTrilhaFormaAprendizagem);
        }

        private void PreencherComboTrilhaNivel()
        {
            ManterTrilhaNivel manterTrilhaNivel = new ManterTrilhaNivel();
            IList<TrilhaNivel> ListaTrilhaNivel = manterTrilhaNivel.ObterTodos();
            WebFormHelper.PreencherLista(ListaTrilhaNivel, this.ddlTrilhaNivel);
        }

        private void CarregarComboSolucaoEducacional(int IdFormaAprendizagem)
        {
            ManterSolucaoEducacional manterSolucaoEducacional = new ManterSolucaoEducacional();
            IList<SolucaoEducacional> ListaSolucaoEducacional = manterSolucaoEducacional.ObterPorFormaAprendizagem(IdFormaAprendizagem);
            WebFormHelper.PreencherLista(ListaSolucaoEducacional, this.ddlSolucaoEducacional);
        }

        #endregion

        private void PreencherCampos(ItemTrilha itemtrilhaEdicao)
        {
            if (itemtrilhaEdicao != null)
            {
                WebFormHelper.SetarValorNaCombo(itemtrilhaEdicao.Trilha.ID.ToString(), ddlTrilha);
                WebFormHelper.SetarValorNaCombo(itemtrilhaEdicao.TrilhaNivel.ID.ToString(), ddlTrilhaNivel);
                WebFormHelper.SetarValorNaCombo(itemtrilhaEdicao.TrilhaTopicoTematico.ID.ToString(), ddlTrilhaTopicoTematico);
                WebFormHelper.SetarValorNaCombo(itemtrilhaEdicao.TrilhaFormaAprendizagem.ID.ToString(), ddlTrilhaFormaAprendizagem);
                CarregarComboSolucaoEducacional(itemtrilhaEdicao.TrilhaFormaAprendizagem.ID);
                WebFormHelper.SetarValorNaCombo(itemtrilhaEdicao.SolucaoEducacional.ID.ToString(), ddlSolucaoEducacional);
                txtPontos.Text = itemtrilhaEdicao.QuantidadePontosParticipacao.ToString();
            }

        }

        protected void btnNovo_Click(object sender, EventArgs e)
        {
            Session.Remove("ItemTrilhaEdit");
            Response.Redirect("EdicaoItemTrilha.aspx");
        }
        
        public void ExibirLinhaPontos(bool exibir)
        {
            this.linhaQtdPontos.Visible = exibir;
        }


    }
}